package popcorn.ticket.serviceimpl;

import java.io.InputStream;
import java.util.Date;

import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.model.ObjectMetadata;

import popcorn.ticket.service.OssService;
@Service
public class UploadServiceImpl implements OssService{
	 private static String endpoint = "oss-cn-shenzhen.aliyuncs.com";
	 private static  String accessKeyId = "LTAI4G6EL6utcta9jCCVY8wo";
	 private static  String accessKeySecret = "lXx4KyLdgcUFmYPNDHnDvLZe2Xt0ps";
	    
	 private static  String bucketName = "popcornticket";
	 
	 @Override
	 public String uploadPicFile(MultipartFile file,String filename) {

		 try {
			Date date = new Date();
            // 创建OSSClient实例。
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            //获取上传文件的输入流
            InputStream inputStream = file.getInputStream();
            filename = "movie/"+date.getTime()+filename+".jpg";
            ObjectMetadata objectMetadata = new ObjectMetadata();
            objectMetadata.setContentType("image/jpg");
            // 上传文件流。
            /*
            * 调用oss方法实现上传
            * 第一个参数： bucketName 名称
            * 第二个参数：上传到oss文件路径和文件名称
            * 第三个参数：上传文件输入流
            * */
            ossClient.putObject(bucketName, filename, inputStream,objectMetadata);
            // 关闭OSSClient。
            ossClient.shutdown();
            // 获取预览
            Date expiration = new Date(new Date().getTime() + 3600L * 1000 * 24 * 180); // url有效期180天
        	String url = ossClient.generatePresignedUrl(bucketName, filename, expiration).toString();
            return url;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }

	 }
	 
	 @Override
	public String uploadViedoFile(MultipartFile file, String filename) {
		 try {
			Date date = new Date();
            // 创建OSSClient实例。
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            //获取上传文件的输入流
            InputStream inputStream = file.getInputStream();
            filename = "movie/"+date.getTime()+filename+".mp4";

            ObjectMetadata objectMetadata = new ObjectMetadata();
            objectMetadata.setContentType("video/mp4");
            // 上传文件流。
            /*
            * 调用oss方法实现上传
            * 第一个参数： bucketName 名称
            * 第二个参数：上传到oss文件路径和文件名称
            * 第三个参数：上传文件输入流
            * */
            ossClient.putObject(bucketName, filename, inputStream,objectMetadata);
            // 关闭OSSClient。
            ossClient.shutdown();
            // 获取预览
            Date expiration = new Date(new Date().getTime() + 3600L * 1000 * 24 * 180); // url有效期180天
        	String url = ossClient.generatePresignedUrl(bucketName, filename, expiration).toString();
            return url;
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
	}
	 
	 @Override
	public String uploadUserImg(MultipartFile file, String filename) {
		 try {
				Date date = new Date();
	            // 创建OSSClient实例。
	            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
	            //获取上传文件的输入流
	            InputStream inputStream = file.getInputStream();
	            filename = "user/"+date.getTime()+filename+".jpg";
	            ObjectMetadata objectMetadata = new ObjectMetadata();
	            objectMetadata.setContentType("image/jpg");
	            // 上传文件流。
	            /*
	            * 调用oss方法实现上传
	            * 第一个参数： bucketName 名称
	            * 第二个参数：上传到oss文件路径和文件名称
	            * 第三个参数：上传文件输入流
	            * */
	            ossClient.putObject(bucketName, filename, inputStream,objectMetadata);
	            // 关闭OSSClient。
	            ossClient.shutdown();
	            // 获取预览
	            Date expiration = new Date(new Date().getTime() + 3600L * 1000 * 24 * 180); // url有效期180天
	        	String url = ossClient.generatePresignedUrl(bucketName, filename, expiration).toString();
	            return url;
	        } catch (Exception e) {
	            e.printStackTrace();
	            return null;
	        }
	}
	 
}
